# 作者： 李泉志
# 2025年01月08日18时16分秒
# 2947029073@qq.com

"""
4 面向对象封装案例
01. 封装
1 封装是面向对象编程的一大特点
2 面向对象编程的第一步 —— 将属性和方法封装到一个抽象的类中
3 外界使用类创建对象，然后让对象调用方法
4 对象方法的细节都被封装在类的内部

02. 身份运算符
身份运算符用于比较两个对象的内存地址是否一致——是否是对同一个对象的引用
• 在Python中针对None比较时，建议使用is判断
is 用于判断两个变量引用对象是否为同一个
== 用于判断引用变量的值是否相等
"""


class Person:
    """人类"""

    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def run(self):
        self.weight -= 0.5
        print(f'{self.name}跑步了，体重-0.5公斤，现在体重{self.weight}公斤。')

    def eat(self):
        self.weight += 1
        print(f'{self.name}吃了东西，体重+1公斤，现在体重{self.weight}公斤。')

    def __str__(self):
        return f'我的名字叫{self.name}，体重{self.weight}公斤。'


if __name__ == '__main__':
    p1 = Person('小明', 70)
    print(p1)
    p1.run()
    p1.eat()
    print(p1)
